package com.wugh.fast.module.async.storage;

import com.wugh.fast.module.async.dto.Task;
import com.wugh.fast.module.async.dto.TaskProcessing;

import java.util.List;

/**
 * 说明: 任务存储器
 *
 * @author wugh
 * @date 2020/4/8 16:55
 */
public interface TaskStorage {
    Task queryTask(String taskId);

    /**
     * 插入任务
     *
     * @param info
     */
    void insertTask(Task info);

    /**
     * 更新任务
     *
     * @param info
     */
    void updateTask(Task info);

    /**
     * 删除任务
     *
     * @param taskId
     */
    void deleteTask(String taskId);

    /**
     * 新增和获取进度
     *
     * @param taskId
     */
    void increaseProcess(String taskId);

    /**
     * 更新当前进度
     * <pre>
     *     以operator作为去重,只会保留最后一个
     * </pre>
     */
    void updateProcess(TaskProcessing process);

    /**
     * 删除指定任务全部的进度
     *
     * @param taskId
     */
    void deleteProcess(String taskId);

    /**
     * 删除指定任务某个操作的进度
     *
     * @param taskId
     * @param operator
     */
    void deleteProcess(String taskId, String operator);

    List<TaskProcessing> queryProcessing(String taskId);

}
